Factorization of Device Driver Code between Kernel and User Spaces

نویسندگان

  • Arini Balakrishnan
  • Swetha Krishnan
چکیده

Device drivers, which are normally implemented as kernel code, pose stability problems since bugs in the drivers cause kernel crashes. Running device drivers as unprivileged user-level code has often been proposed as a solution to increase the robustness of the system. However, moving the entire driver to user space brings down the performance of the system. An alternative approach would be to retain the performance critical code in the kernel and move the less performance sensitive code to the user space. In this project, we propose a scheme for factorization of driver code based on performance. In our split driver, work that needs to be done fast such as device I/O and interrupt handling is retained in the kernel space. Work that is less common and can afford to be done slower such as configuration or statictics collection is moved to the user space. We implemented this scheme on PCnet32 network driver and measured the performance overhead incurred by moving some of the driver functions to user space. We found the performance overhead to be less than a factor of 2. Also, the performance of the critical operations retained in the kernel was not affected by this factorization.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Microdrivers: A New Architecture for Device Drivers

Commodity operating systems achieve good performance by running device drivers in-kernel. Unfortunately, this architecture offers poor fault isolation. This paper introduces microdrivers, which reduce the amount of driver code running in the kernel by splitting driver functionality between a small kernel-mode component and a larger user-mode component. This paper presents the microdriver archit...

متن کامل

Protecting Commodity Operating System Kernels from Vulnerable Device Drivers (Full Version)

Device drivers on commodity operating systems execute with kernel privilege and have unfettered access to kernel data structures. Several recent attacks demonstrate that such poor isolation exposes kernel data to exploits against vulnerable device drivers, for example through buffer overruns in packet processing code. Prior architectures to isolate kernel data from driver code either sacrifice ...

متن کامل

Protecting Commodity OS Kernels from Vulnerable Device Drivers

Device drivers on commodity operating systems execute with kernel privilege and have unfettered access to kernel data structures. Several recent attacks demonstrate that such poor isolation exposes kernel data to exploits against vulnerable device drivers, for example through buffer overruns in packet processing code. Prior architectures to isolate kernel data from driver code either sacrifice ...

متن کامل

Decaf: Moving Device Drivers to a Modern Language

Writing code to interact with external devices is inherently difficult, and the added demands of writing device drivers in C for kernel mode compounds the problem. This environment is complex and brittle, leading to increased development costs and, in many cases, unreliable code. Previous solutions to this problem ignore the cost of migrating drivers to a better programming environment and requ...

متن کامل

Tolerating Malicious Device Drivers in Linux

This paper presents SUD, a system for running existing Linux device drivers as untrusted user-space processes. Even if the device driver is controlled by a malicious adversary, it cannot compromise the rest of the system. One significant challenge of fully isolating a driver is to confine the actions of its hardware device. SUD relies on IOMMU hardware, PCI express bridges, and messagesignaled ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2006